home *** CD-ROM | disk | FTP | other *** search
/ STraTOS 1997 April & May / STraTOS 1 - 1997 April & May.iso / CD01 / INTERNET / SITES / RAND / BM132A.LZH / bm_132a / lighting.s < prev    next >
Encoding:
Text File  |  1995-11-15  |  3.1 KB  |  147 lines

  1. *=======================================================*
  2. *    Lighting module: latest update 12/11/95        *
  3. *=======================================================*
  4. *    The contents of this module are temporary,    *
  5. *    and should not be taken seriously. I just     *
  6. *    wanted to see what lighting would look like!    *
  7. *=======================================================*
  8.  
  9. *-------------------------------------------------------*
  10. *    Dodgey colour-mixing macros            *
  11. *-------------------------------------------------------*
  12.  
  13. getcol    macro
  14.     and.w        #$FF,\1
  15.     move.w        (colours.l,\1.w*2),\1
  16.     endm
  17.  
  18. fixcol    macro
  19.     push.w        d7
  20.     bfextu        \1{16:5},\3
  21.     mulu        \2,\3
  22.     and.w        #$FF00,\3
  23.     lsl.w        #3,\3
  24.     bfextu        \1{21:6},d7
  25.     mulu        \2,d7
  26.     lsr.w        #8,d7
  27.     lsl.w        #5,d7
  28.     or.w        d7,\3
  29.     bfextu        \1{27:5},d7
  30.     mulu        \2,d7
  31.     lsr.w        #8,d7
  32.     or.w        d7,\3
  33.     pop.w        d7
  34.     endm
  35.  
  36. *-------------------------------------------------------*
  37. *    Dodgey hacks to set up sector lighting        *
  38. *-------------------------------------------------------*
  39.  
  40. set_lighting:
  41.     move.w        frame,framelock
  42.     rts
  43.  
  44. process_lighting:
  45.     pushall
  46.     move.l        this_sector,a0
  47.     move.w        sector_special(a0),d2
  48.     move.w        sector_light(a0),d1
  49.     lsr.w        d1
  50.     cmp.w        #1,d2
  51.     beq.s        .off
  52.     cmp.w        #2,d2
  53.     beq.s        .on
  54.     cmp.w        #3,d2
  55.     beq.s        .on
  56.     cmp.w        #4,d2
  57.     beq.s        .on
  58.     cmp.w        #8,d2
  59.     beq.s        .off
  60.     cmp.w        #12,d2
  61.     beq.s        .sync
  62.     cmp.w        #13,d2
  63.     beq.s        .sync
  64.     cmp.w        #17,d2
  65.     beq.s        .off
  66. .end:    move.w        d1,sector_tag(a0)
  67.     popall
  68.     rts
  69. .on:    move.w        framelock,d2
  70.     lsr.w        #4,d2
  71.     and.w        #8-1,d2
  72.     bne.s        .end
  73.     move.w        #255,d1
  74.     bra        .end
  75. .off:    move.w        framelock,d2
  76.     lsr.w        #4,d2
  77.     addq.w        #3,d2
  78.     and.w        #8-1,d2
  79.     beq        .end
  80.     move.w        #255,d1
  81.     bra        .end
  82. .sync:    move.l        a0,d2
  83.     add.w        framelock,d2
  84.     lsr.l        #4,d2
  85.     and.w        #8-1,d2
  86.     bne        .end
  87.     move.w        #255,d1
  88.     bra        .end
  89.  
  90. *-------------------------------------------------------*
  91. *    Even more dodgey hack to work out colours    *
  92. *-------------------------------------------------------*
  93. select_colours:    
  94. *-------------------------------------------------------*
  95.     swap        d0
  96.     sub.w        d0,d0
  97.     swap        d0
  98.     move.l        d0,a0
  99.     move.l        Sector_Array,a1 
  100.     lea        (a0,a0.l*2),a5
  101.     move.l        a5,d0 
  102.     lea        (a0,d0.l*4),a0
  103.     move.l        a0,d0 
  104.     ifd        lighting_effects
  105.     moveq        #0,d1
  106.     move.w        sector_tag(a1,d0.w*2),d1
  107.     endc
  108.     move.w        sector_colour,d0
  109.     getcol        d0
  110.     ifd        lighting_effects
  111.     fixcol        d0,d1,d2
  112.     move.w        d2,addwall_tex(a6)
  113.     elseif
  114.     move.w        d0,addwall_tex(a6)
  115.     endc
  116.     move.w        floor_ht,d0
  117.     getcol        d0
  118.     ifd        lighting_effects
  119.     fixcol        d0,d1,d2
  120.     move.w        d2,addwall_fc(a6)
  121.     elseif
  122.     move.w        d0,addwall_fc(a6)
  123.     endc
  124.     move.w        ceiling_ht,d0
  125.     getcol        d0
  126.     ifd        lighting_effects
  127.     fixcol        d0,d1,d2
  128.     move.w        d2,addwall_cc(a6)
  129.     elseif
  130.     move.w        d0,addwall_cc(a6)
  131.     endc
  132.     rts
  133.  
  134. *-------------------------------------------------------*
  135.             bss
  136. *-------------------------------------------------------*
  137.  
  138. frame:            ds.w    1            ; some timing variables
  139. framelock:        ds.w    1            ; for hacked lighting effects
  140.  
  141. floor_col:        ds.w    1            ; floor texture-id
  142. ceiling_col:        ds.w    1            ; ceiling texture-id
  143.  
  144. *-------------------------------------------------------*
  145.             text
  146. *-------------------------------------------------------*
  147.